import { defaultEquals, DOES_NOT_EXIST, IEqualsFunction } from '../../util';

/**
 * 顺序搜索（线性搜索）__：遍历数据结构，将每个元素和要找的元素进行比较，
 * 相同就返回（返回该值或者该值所在索引或者返回true）。
 * @param array 目标数组
 * @param value 待搜索值
 * @param equalsFn 相等函数
 */
export function sequentialSearch<T>(array: T[], value: T, equalsFn: IEqualsFunction<T> = defaultEquals) {
    for (let i = 0; i < array.length; i++) {
        if (equalsFn(value, array[i])) {
            return i;
        }
    }
    return DOES_NOT_EXIST;
}
